
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.util.ArrayList;

/**
 * 
 * This class is for the basic block of which consists the map.
 *
 */
public class Block {
	
	public static final int BLOCK_TYPE_ID_FIELD = 1;
	public static final int BLOCK_TYPE_ID_MIRE = 2;
	public static final int BLOCK_TYPE_ID_WATER = 3;
	public static final int BLOCK_TYPE_ID_MOUNTAIN = 4;
	public static final int BLOCK_TYPE_ID_FOREST = 5;
	public static final int BLOCK_TYPE_ID_ROAD = 6;
	
	protected int blockTypeID;
	protected Point blockCoord;	// The location coordinate on the map
	
	/*
	 * Motion point reduction for all types of units
	 */
	protected int motionPointReductionForTank;
	protected int motionPointReductionForMobileAA;
	protected int motionPointReductionForInfantry;
	protected int motionPointReductionForBattleship;
	protected int motionPointReductionForJet;
	/* ... More ... */
	
	public Block(Point coord) {
		blockCoord = coord;		
	}
	
	/*
	 * Copy constructor
	 */
	public Block(Block block) {
		this.blockTypeID = block.getBlockTypeID();
		this.blockCoord = new Point(block.getBlockCoord());
		this.motionPointReductionForTank = block.getMotionPointReductionForTank();
		this.motionPointReductionForBattleship = block.getMotionPointReductionForBattleship();
		this.motionPointReductionForInfantry = block.getMotionPointReductionForInfantry();
		this.motionPointReductionForJet = block.getMotionPointReductionForJet();
		this.motionPointReductionForMobileAA = block.getMotionPointReductionForMobileAA();
	}

	/*
	 * Mutators
	 */
	public void setBlockTypeID(int bTId) {
		blockTypeID = bTId;
	}
	
	public void setBlockCoord(Point bC) {
		blockCoord = bC;
	}
	
	/*
	 * Accessors
	 */
	public int getBlockTypeID() {
		return blockTypeID;
	}
	
	public Point getBlockCoord() {
		return blockCoord;
	}
	
	/* ... More ... */
	
	/*
	 * Accessor for motion ability reduction
	 */
	public int getMotionPointReductionForTank() {
		return motionPointReductionForTank;
	}
	
	public int getMotionPointReductionForMobileAA() {
		return motionPointReductionForMobileAA;
	}
	
	public int getMotionPointReductionForInfantry() {
		return motionPointReductionForInfantry;
	}
	
	public int getMotionPointReductionForBattleship() {
		return motionPointReductionForBattleship;
	}
	
	public int getMotionPointReductionForJet() {
		return motionPointReductionForJet;
	}
	
	/* ... More ... */
}
